package com.appkubes.mall.core.pojo;

import com.appkubes.mall.core.po.FintechRentRepayOrder;
import com.appkubes.mall.core.po.FintechRentRepayOrderExample;
import java.util.List;
import org.apache.ibatis.annotations.Delete;
import org.apache.ibatis.annotations.DeleteProvider;
import org.apache.ibatis.annotations.Insert;
import org.apache.ibatis.annotations.InsertProvider;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Result;
import org.apache.ibatis.annotations.Results;
import org.apache.ibatis.annotations.Select;
import org.apache.ibatis.annotations.SelectProvider;
import org.apache.ibatis.annotations.Update;
import org.apache.ibatis.annotations.UpdateProvider;
import org.apache.ibatis.session.RowBounds;
import org.apache.ibatis.type.JdbcType;

public interface FintechRentRepayOrderMapper {
    /**
     * This method was generated by MyBatis Generator.
     * This method corresponds to the database table fintech_rent_repay_order
     *
     * @mbg.generated
     */
    @SelectProvider(type=FintechRentRepayOrderSqlProvider.class, method="countByExample")
    long countByExample(FintechRentRepayOrderExample example);

    /**
     * This method was generated by MyBatis Generator.
     * This method corresponds to the database table fintech_rent_repay_order
     *
     * @mbg.generated
     */
    @DeleteProvider(type=FintechRentRepayOrderSqlProvider.class, method="deleteByExample")
    int deleteByExample(FintechRentRepayOrderExample example);

    /**
     * This method was generated by MyBatis Generator.
     * This method corresponds to the database table fintech_rent_repay_order
     *
     * @mbg.generated
     */
    @Delete({
        "delete from fintech_rent_repay_order",
        "where repay_key = #{repayKey,jdbcType=VARCHAR}"
    })
    int deleteByPrimaryKey(String repayKey);

    /**
     * This method was generated by MyBatis Generator.
     * This method corresponds to the database table fintech_rent_repay_order
     *
     * @mbg.generated
     */
    @Insert({
        "insert into fintech_rent_repay_order (repay_key, app_key, ",
        "user_key, rent_order_key, ",
        "period_type, bill_key, ",
        "bill_line_key, line_periods, ",
        "pay_time, reapay_time, ",
        "user_name, pay_trade_no, ",
        "pay_amt, pay_type, ",
        "`status`, create_time, ",
        "update_time, ret_repay_msg, ",
        "ret_pay_msg)",
        "values (#{repayKey,jdbcType=VARCHAR}, #{appKey,jdbcType=VARCHAR}, ",
        "#{userKey,jdbcType=VARCHAR}, #{rentOrderKey,jdbcType=VARCHAR}, ",
        "#{periodType,jdbcType=INTEGER}, #{billKey,jdbcType=VARCHAR}, ",
        "#{billLineKey,jdbcType=VARCHAR}, #{linePeriods,jdbcType=VARCHAR}, ",
        "#{payTime,jdbcType=TIMESTAMP}, #{reapayTime,jdbcType=TIMESTAMP}, ",
        "#{userName,jdbcType=VARCHAR}, #{payTradeNo,jdbcType=VARCHAR}, ",
        "#{payAmt,jdbcType=INTEGER}, #{payType,jdbcType=VARCHAR}, ",
        "#{status,jdbcType=VARCHAR}, #{createTime,jdbcType=TIMESTAMP}, ",
        "#{updateTime,jdbcType=TIMESTAMP}, #{retRepayMsg,jdbcType=VARCHAR}, ",
        "#{retPayMsg,jdbcType=VARCHAR})"
    })
    int insert(FintechRentRepayOrder record);

    /**
     * This method was generated by MyBatis Generator.
     * This method corresponds to the database table fintech_rent_repay_order
     *
     * @mbg.generated
     */
    @InsertProvider(type=FintechRentRepayOrderSqlProvider.class, method="insertSelective")
    int insertSelective(FintechRentRepayOrder record);

    /**
     * This method was generated by MyBatis Generator.
     * This method corresponds to the database table fintech_rent_repay_order
     *
     * @mbg.generated
     */
    @SelectProvider(type=FintechRentRepayOrderSqlProvider.class, method="selectByExample")
    @Results({
        @Result(column="repay_key", property="repayKey", jdbcType=JdbcType.VARCHAR, id=true),
        @Result(column="app_key", property="appKey", jdbcType=JdbcType.VARCHAR),
        @Result(column="user_key", property="userKey", jdbcType=JdbcType.VARCHAR),
        @Result(column="rent_order_key", property="rentOrderKey", jdbcType=JdbcType.VARCHAR),
        @Result(column="period_type", property="periodType", jdbcType=JdbcType.INTEGER),
        @Result(column="bill_key", property="billKey", jdbcType=JdbcType.VARCHAR),
        @Result(column="bill_line_key", property="billLineKey", jdbcType=JdbcType.VARCHAR),
        @Result(column="line_periods", property="linePeriods", jdbcType=JdbcType.VARCHAR),
        @Result(column="pay_time", property="payTime", jdbcType=JdbcType.TIMESTAMP),
        @Result(column="reapay_time", property="reapayTime", jdbcType=JdbcType.TIMESTAMP),
        @Result(column="user_name", property="userName", jdbcType=JdbcType.VARCHAR),
        @Result(column="pay_trade_no", property="payTradeNo", jdbcType=JdbcType.VARCHAR),
        @Result(column="pay_amt", property="payAmt", jdbcType=JdbcType.INTEGER),
        @Result(column="pay_type", property="payType", jdbcType=JdbcType.VARCHAR),
        @Result(column="status", property="status", jdbcType=JdbcType.VARCHAR),
        @Result(column="create_time", property="createTime", jdbcType=JdbcType.TIMESTAMP),
        @Result(column="update_time", property="updateTime", jdbcType=JdbcType.TIMESTAMP),
        @Result(column="ret_repay_msg", property="retRepayMsg", jdbcType=JdbcType.VARCHAR),
        @Result(column="ret_pay_msg", property="retPayMsg", jdbcType=JdbcType.VARCHAR)
    })
    List<FintechRentRepayOrder> selectByExampleWithRowbounds(FintechRentRepayOrderExample example, RowBounds rowBounds);

    /**
     * This method was generated by MyBatis Generator.
     * This method corresponds to the database table fintech_rent_repay_order
     *
     * @mbg.generated
     */
    @SelectProvider(type=FintechRentRepayOrderSqlProvider.class, method="selectByExample")
    @Results({
        @Result(column="repay_key", property="repayKey", jdbcType=JdbcType.VARCHAR, id=true),
        @Result(column="app_key", property="appKey", jdbcType=JdbcType.VARCHAR),
        @Result(column="user_key", property="userKey", jdbcType=JdbcType.VARCHAR),
        @Result(column="rent_order_key", property="rentOrderKey", jdbcType=JdbcType.VARCHAR),
        @Result(column="period_type", property="periodType", jdbcType=JdbcType.INTEGER),
        @Result(column="bill_key", property="billKey", jdbcType=JdbcType.VARCHAR),
        @Result(column="bill_line_key", property="billLineKey", jdbcType=JdbcType.VARCHAR),
        @Result(column="line_periods", property="linePeriods", jdbcType=JdbcType.VARCHAR),
        @Result(column="pay_time", property="payTime", jdbcType=JdbcType.TIMESTAMP),
        @Result(column="reapay_time", property="reapayTime", jdbcType=JdbcType.TIMESTAMP),
        @Result(column="user_name", property="userName", jdbcType=JdbcType.VARCHAR),
        @Result(column="pay_trade_no", property="payTradeNo", jdbcType=JdbcType.VARCHAR),
        @Result(column="pay_amt", property="payAmt", jdbcType=JdbcType.INTEGER),
        @Result(column="pay_type", property="payType", jdbcType=JdbcType.VARCHAR),
        @Result(column="status", property="status", jdbcType=JdbcType.VARCHAR),
        @Result(column="create_time", property="createTime", jdbcType=JdbcType.TIMESTAMP),
        @Result(column="update_time", property="updateTime", jdbcType=JdbcType.TIMESTAMP),
        @Result(column="ret_repay_msg", property="retRepayMsg", jdbcType=JdbcType.VARCHAR),
        @Result(column="ret_pay_msg", property="retPayMsg", jdbcType=JdbcType.VARCHAR)
    })
    List<FintechRentRepayOrder> selectByExample(FintechRentRepayOrderExample example);

    /**
     * This method was generated by MyBatis Generator.
     * This method corresponds to the database table fintech_rent_repay_order
     *
     * @mbg.generated
     */
    @Select({
        "select",
        "repay_key, app_key, user_key, rent_order_key, period_type, bill_key, bill_line_key, ",
        "line_periods, pay_time, reapay_time, user_name, pay_trade_no, pay_amt, pay_type, ",
        "`status`, create_time, update_time, ret_repay_msg, ret_pay_msg",
        "from fintech_rent_repay_order",
        "where repay_key = #{repayKey,jdbcType=VARCHAR}"
    })
    @Results({
        @Result(column="repay_key", property="repayKey", jdbcType=JdbcType.VARCHAR, id=true),
        @Result(column="app_key", property="appKey", jdbcType=JdbcType.VARCHAR),
        @Result(column="user_key", property="userKey", jdbcType=JdbcType.VARCHAR),
        @Result(column="rent_order_key", property="rentOrderKey", jdbcType=JdbcType.VARCHAR),
        @Result(column="period_type", property="periodType", jdbcType=JdbcType.INTEGER),
        @Result(column="bill_key", property="billKey", jdbcType=JdbcType.VARCHAR),
        @Result(column="bill_line_key", property="billLineKey", jdbcType=JdbcType.VARCHAR),
        @Result(column="line_periods", property="linePeriods", jdbcType=JdbcType.VARCHAR),
        @Result(column="pay_time", property="payTime", jdbcType=JdbcType.TIMESTAMP),
        @Result(column="reapay_time", property="reapayTime", jdbcType=JdbcType.TIMESTAMP),
        @Result(column="user_name", property="userName", jdbcType=JdbcType.VARCHAR),
        @Result(column="pay_trade_no", property="payTradeNo", jdbcType=JdbcType.VARCHAR),
        @Result(column="pay_amt", property="payAmt", jdbcType=JdbcType.INTEGER),
        @Result(column="pay_type", property="payType", jdbcType=JdbcType.VARCHAR),
        @Result(column="status", property="status", jdbcType=JdbcType.VARCHAR),
        @Result(column="create_time", property="createTime", jdbcType=JdbcType.TIMESTAMP),
        @Result(column="update_time", property="updateTime", jdbcType=JdbcType.TIMESTAMP),
        @Result(column="ret_repay_msg", property="retRepayMsg", jdbcType=JdbcType.VARCHAR),
        @Result(column="ret_pay_msg", property="retPayMsg", jdbcType=JdbcType.VARCHAR)
    })
    FintechRentRepayOrder selectByPrimaryKey(String repayKey);

    /**
     * This method was generated by MyBatis Generator.
     * This method corresponds to the database table fintech_rent_repay_order
     *
     * @mbg.generated
     */
    @UpdateProvider(type=FintechRentRepayOrderSqlProvider.class, method="updateByExampleSelective")
    int updateByExampleSelective(@Param("record") FintechRentRepayOrder record, @Param("example") FintechRentRepayOrderExample example);

    /**
     * This method was generated by MyBatis Generator.
     * This method corresponds to the database table fintech_rent_repay_order
     *
     * @mbg.generated
     */
    @UpdateProvider(type=FintechRentRepayOrderSqlProvider.class, method="updateByExample")
    int updateByExample(@Param("record") FintechRentRepayOrder record, @Param("example") FintechRentRepayOrderExample example);

    /**
     * This method was generated by MyBatis Generator.
     * This method corresponds to the database table fintech_rent_repay_order
     *
     * @mbg.generated
     */
    @UpdateProvider(type=FintechRentRepayOrderSqlProvider.class, method="updateByPrimaryKeySelective")
    int updateByPrimaryKeySelective(FintechRentRepayOrder record);

    /**
     * This method was generated by MyBatis Generator.
     * This method corresponds to the database table fintech_rent_repay_order
     *
     * @mbg.generated
     */
    @Update({
        "update fintech_rent_repay_order",
        "set app_key = #{appKey,jdbcType=VARCHAR},",
          "user_key = #{userKey,jdbcType=VARCHAR},",
          "rent_order_key = #{rentOrderKey,jdbcType=VARCHAR},",
          "period_type = #{periodType,jdbcType=INTEGER},",
          "bill_key = #{billKey,jdbcType=VARCHAR},",
          "bill_line_key = #{billLineKey,jdbcType=VARCHAR},",
          "line_periods = #{linePeriods,jdbcType=VARCHAR},",
          "pay_time = #{payTime,jdbcType=TIMESTAMP},",
          "reapay_time = #{reapayTime,jdbcType=TIMESTAMP},",
          "user_name = #{userName,jdbcType=VARCHAR},",
          "pay_trade_no = #{payTradeNo,jdbcType=VARCHAR},",
          "pay_amt = #{payAmt,jdbcType=INTEGER},",
          "pay_type = #{payType,jdbcType=VARCHAR},",
          "`status` = #{status,jdbcType=VARCHAR},",
          "create_time = #{createTime,jdbcType=TIMESTAMP},",
          "update_time = #{updateTime,jdbcType=TIMESTAMP},",
          "ret_repay_msg = #{retRepayMsg,jdbcType=VARCHAR},",
          "ret_pay_msg = #{retPayMsg,jdbcType=VARCHAR}",
        "where repay_key = #{repayKey,jdbcType=VARCHAR}"
    })
    int updateByPrimaryKey(FintechRentRepayOrder record);
}